import REDRequest from './request';
import { BASE_URL, TIME_OUT } from './request/config';
import localCache from '@/utils/cache';

// 这里主要是传入发送请求的参数，包括拦截器.
// 再导入使用这个实例.request 或者 .get方法传入参数发送真正的请求.
const redRequest = new REDRequest({
  baseURL: BASE_URL,
  timeout: TIME_OUT,
  // 实例的拦截器
  interceptors: {
    requestInterceptor(config) {
      // 携带token的拦截
      const token = localCache.getCache('token');

      if (token) {
        // 每次发送请求都携带token
        // config.headers.Authorization = `Bearer ${token}`;
        (config.headers as any).Authorization = `Bearer ${token}`;
      }

      // console.log('请求发送成功的拦截执行');
      return config;
    },
    requestInterceptorCatch(err) {
      // console.log('请求发送失败的拦截执行');
      return err;
    },
    responseInterceptor(res) {
      // console.log('响应成功的拦截执行');
      return res;
    },
    responseInterceptorCatch(err) {
      // console.log('响应失败的拦截执行');
      return err;
    }
  },
  showLoading: true
});

export default redRequest;
